package Complementos;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
/**
 *
 * @author Bruno
 */
public class Validar {

    /*
     * VALIDACIONES DE CAMPOS DE SOLO NÚMEROS
     */
    public boolean validarNro(String cadena) {
        int l = cadena.length();
        char c = ' ';
        boolean valida = true;



        for (int i = 0; i < l; i++) {
            c = cadena.charAt(i);
            if (!(Character.isDigit(c))) {
                valida = false;
            }
        }

        return (valida);

    }

    public boolean esVacio(String cadena) {
        return (cadena.equals(""));
    }


    /*
     * VALIDA UNA DIRECCION CORRECTA DE EMAIL MEDIANTE EXPRESIÓN REGULAR
     */
    public boolean validarEmail(String input) {
        boolean valida = true;
        Pattern p = Pattern.compile("\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
        Matcher m = p.matcher(input);
        if (!m.find()) {
            System.err.println("Dirección incorrecta");
            valida = false;
        }

        return valida;


    }

    public boolean validarDni(String dni) {
        boolean valida = true;
        Pattern p = Pattern.compile("^[0-9]{8}$");
        Matcher m = p.matcher(dni);
        if (!m.find()) {
            valida = false;
        }
        return valida;
    }
    
     public boolean validarTelefono(String telf) {
        boolean valida = true;      
        Pattern p = Pattern.compile("^[2-7]{1}[0-9]{6}$");
        Matcher m = p.matcher(telf);
        if (!m.find()) {
            valida = false;
        }
        return valida;
    }
    
    public boolean validarCelular(String cel) {
        boolean valida = true;        
        Pattern p = Pattern.compile("^[9]{1}[0-9]{8}$");
        Matcher m = p.matcher(cel);
        if (!m.find()) {
            valida = false;
        }        
        return valida;
    }

    public boolean validarVacio(String texto) {
        boolean valida = true;
        Pattern p = Pattern.compile("^\\s+$");
        Matcher m = p.matcher(texto);
        if (!m.find()) {
            valida = false;
        }
        return valida;
    }

    /*
     * VALIDACIONES DE CAMPOS DE SOLO TEXTO
     */
    public boolean validarTexto(String cadena) {
        boolean valida = true;
        Pattern p = Pattern.compile("^([A-Za-zñ\\s])+$");
        Matcher m = p.matcher(cadena);

        if (!m.find()) {
            valida = false;
        }

        return valida;
    }

    public int calcularEdad(String fecha_nac) {     //fecha_nac debe tener el formato dd/MM/yyyy

        Date fechaActual = new Date();
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        String hoy = formato.format(fechaActual);
        String[] dat1 = fecha_nac.split("/");
        String[] dat2 = hoy.split("/");
        int anos = Integer.parseInt(dat2[2]) - Integer.parseInt(dat1[2]);
        int mes = Integer.parseInt(dat2[1]) - Integer.parseInt(dat1[1]);
        if (mes < 0) {
            anos = anos - 1;
        } else if (mes == 0) {
            int dia = Integer.parseInt(dat2[0]) - Integer.parseInt(dat1[0]);
            if (dia < 0) {
                anos = anos - 1;
            }
        }
        return anos;
    }

    public String cambiarFormatoFecha(String fecha) {
        String nuevafecha = "";
        String dia = "";
        String mes = "";
        String anho = "";

        StringTokenizer t = new StringTokenizer(fecha, "-");
        anho = t.nextToken();
        mes = t.nextToken();
        dia = t.nextToken();


        nuevafecha = dia + "/" + mes + "/" + anho;

        return nuevafecha;

    }

    /*
     * VALIDA LONGITUD MÁXIMA DEL CAMPO
     */
    public boolean validarLongitud(int longitud_max, String cadena) {

        if (cadena.length() > longitud_max) {
            return false;
        } else {
            return true;
        }
    }


    /*
     * ELIMINA LOS [ ] DE LA FECHA SELECCIONADA DEL CALENDARIO GRANDE de frmReservaCIta
     */
    public String formatearFechaDeCalendario(String f) {
        String n = "";

        for (int i = 0; i < f.length(); i++) {
            if ((f.charAt(i) != '[') && (f.charAt(i) != ']')) {
                n = n + f.charAt(i);
            }
        }
        return n;

    }

    public String obtenerHorarioDeCalendario(String fecha) {
        return fecha.substring(11, 16);

    }

    public String obtenerDiaDeCalendario(String fecha) {
        return fecha.substring(0, 10);

    }

    public String agregarCerosYNumeroAIncrementar(int st, int numero) {
        String nro;
        int cod = 0;
        if (st == 0) {
            nro = "00001";
        } else {
            cod = st + numero;

            if (cod < 10) {
                nro = "0000" + cod;
            } else if (cod < 100) {
                nro = "000" + cod;
            } else if (cod < 1000) {
                nro = "00" + cod;
            } else {
                nro = "0" + cod;
            }
        }
        return nro;
    }

    public String cambiarFormatoFechaParaBD(String fecha) {  // entra dd/mm/yyyy  
        String nuevafecha = "";
        String dia = "";
        String mes = "";
        String anho = "";

        StringTokenizer t = new StringTokenizer(fecha, "/");
        dia = t.nextToken();
        mes = t.nextToken();
        anho = t.nextToken();

        nuevafecha = anho + "-" + mes + "-" + dia;

        return nuevafecha;

    }

    public boolean validarAdelanto(String monto) {
        boolean validar = true;

        if (Double.parseDouble(monto) >= 1000) {
            validar = false;
        }

        return validar;
    }

    public String formatoSTR(String fechita) {
      String fecha=fechita.replace('/', ',');         
      return fecha;
    }

    
}
